package org.example.factory;

import org.example.factory.service.LLMService;
import org.example.factory.service.OpenAiLLMService;
import org.example.factory.service.QwenLLMService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * LLM工厂类，用于创建不同类型的LLM服务实例
 */
@Component
public class LLMFactory {

    private final QwenLLMService qwenLLMService;
    private final OpenAiLLMService openAiLLMService;

    /**
     * 构造函数，通过Spring依赖注入初始化服务实例
     */
    @Autowired
    public LLMFactory(QwenLLMService qwenLLMService, OpenAiLLMService openAiLLMService) {
        this.qwenLLMService = qwenLLMService;
        this.openAiLLMService = openAiLLMService;
    }

    /**
     * 模型类型枚举，定义支持的LLM模型类型
     */
    public enum modelType{
        OPENAI,QWEN
    }

    /**
     * 根据指定的模型类型创建对应的LLM服务实例
     * @param type 模型类型，决定创建哪种LLM服务
     * @return 返回对应模型类型的LLM服务实例
     */
    public LLMService createLLMService(modelType type){
        // 使用switch表达式根据模型类型返回相应的服务实例
        return switch (type){
            case QWEN -> qwenLLMService;
            case OPENAI -> openAiLLMService;
        };
    }
}

